package cn.quevo.cube.provide.data.validate.impl;

import cn.quevo.common.lang.JSONUtils;
import cn.quevo.common.lang.StringUtils;
import cn.quevo.cube.provide.data.entity.dto.ColumnValidateDto;
import cn.quevo.cube.provide.data.validate.AbstractColumnDataValidate;
import cn.quevo.cube.provide.data.validate.ColumnDataValidate;
import cn.quevo.cube.provide.exception.ColumnCheckException;
import cn.quevo.cube.provide.exception.response.ColumnExceptionResponse;

import java.util.Map;

/**
 * 枚举类型验证
 *
 * @author July july_sky@foxmail.com
 * @version 1.0
 * @date 2018/4/20 下午1:08
 * @Copyright ©2015-2035 湘豫(北京)科技有限公司. All Rights Reserved.
 */
public class EnumValidate extends AbstractColumnDataValidate implements ColumnDataValidate {

    @Override
    protected void checked(ColumnValidateDto columnValidateDto) {
        if (StringUtils.isBlank(columnValidateDto.getChoseValues())) {
            throw new ColumnCheckException(ColumnExceptionResponse.OPTION_NOT_EXISTS);
        }
        Map<String,Object> choses = JSONUtils.parse(columnValidateDto.getChoseValues(),Map.class);
        if (StringUtils.isEmpty(choses)) {
            throw new ColumnCheckException(ColumnExceptionResponse.OPTION_NOT_EXISTS);
        }
        if (choses.get(columnValidateDto.getValue()) == null) {
            throw new ColumnCheckException(ColumnExceptionResponse.OPTION_NOT_EXISTS);
        }
    }
}
